Hard & Soft Link(File system)

$cp [복사할 파일명] [붙여넣기할 파일명]       // 파일 복사
    1MB 사이즈를 가지고 있는 A 파일을 B 파일로 복사
        $cp A B-> A와 B는 각각 물리적으로 10MB 파일로 저장
$cp -rf [복사할 디렉토리명] [붙여넣기할 디렉토리명]       // 디렉토리(하위포함) 전체 복사
$rm [파일명]        // 파일 삭제
$rm -rf [디렉토리명]        //디렉토리(하위포함) 삭제
하드링크
$ln [파일명1] [파일명2]        //파일명1과 파일명2가 동일한 inode를 가르키게 된다.
    A와 B는 동일한 10MB 파일을 가르킨다.
    내부적으로 동일한 파일을 가진 이름을 하나 더 만든 것일 뿐
        파일의 inode는 서로 동일(cp는 해당 inode를 복사해서 새로운 inode를 생성)
        전체 파일 용량 변화 없다.
$ls -i를 통해 확인시 ln(hard link)를 통해 생성한 link_test.txt는 원본 파일 copy_test.txt와 inode 번호가 동일하다.
($cp를 통해 복사한 copy_test.txt, test.txt는 inode 번호가 서로 다름
$ls -al 세부 파일 정보는 서로 동일함

원본 파일이나, 링크된 파일을 둘 중 하나 삭제해도 해당 inode 링크만 삭제되고 inode 자체는 삭제되지 않는다.
삭제되지 않은 파일에서 여전히 접근 가능하다.

하드링크를 사용하면 저장 공간을 절약할 수 있다.
소프트(심볼릭) 링크    (Windows OS의 바로가기와 동일)
$ln -s [파일명1] [파일명2]        // 파일명2가 파일명1의 inode를 가르킨다.(원본파일을 가르킨다.)

파일명1과 파일명2의 inode 값도 서로 다르다!
파일명2는 새로운 inode가 생성되고, 새로 생성된 inode 구조에 address에 데이터를 연결하는 것이 아닌 원본 inode 주소가 링크!
$ls-al을 통해서 소프트 링크 확인(파일 종류도 l 로 분류)

$rm를 통해서 원본파일 삭제시 링크된 파일에서 파일 접근 불가능
test!!!
$mkdir link_test
$cd link_test
$ls -al>test.txt
$cp test.txt test_cp.txt
$ln test.txt test_hard.txt
$ln -s test.txt test_soft.txt
$ls -al

total 20

drwxrwxr-x 2 celina celina 4096 Jul 26 03:31 .

drwx------ 3 celina celina 4096 Jul 26 03:30 ..

-rw-rw-r-- 2 celina celina  157 Jul 26 03:31 test.txt

-rw-rw-r-- 1 celina celina  157 Jul 26 03:31 test_cp.txt

lrwxrwxrwx 1 celina celina    8 Jul 26 03:31 test_soft.txt -> test.txt

-rw-rw-r-- 2 celina celina  157 Jul 26 03:31 test_hard.txt


$ls -i

411301 test.txt  411302 test_cp.txt  411585 test_soft.txt  411301 test_hard.txt


$rm test.txt
$cat test_soft.txt

cat: test_soft.txt: No such file or directory


동일할 inode를 가진 파일이 있어서 원본 파일이 지워지면, soft 링크된 파일도 내용을 잃는다.

해당 파일에 test.txt 이름을 가진 파일을 생성해주니 다시 자동으로 링크됨

inode가 아닌 파일명으로 연결된 것 같다.

특수 파일
    디바이스
        블록 디바이스(Block Device)
            : HDD, CD/DVD와 같이 블록 또는 섹터 등 정해진 단위로 데이터 전송, IO 송수신 속도가 높음
        캐릭터 디바이스(Character Device)
            : 키보드, 마우스 등 byte 단위 데이터 전송, IO 송수신 속도가 낮다.

$cd /dev
$ls -al

block device는 b로 표시
character device는 c
ssh로 외부에서 접속한 후 cat으로 원래 컴퓨터 tty에 cat으로 접속시 termianl 키보드 입력내용을 가져올 수 있다.